1
Proses Berstatus dan Optimisasi Panggilan Akhir
AI019Lesson 7
00:00

Dalam Elixir, proses bersifat sementara secara bawaan; begitu fungsi selesai, proses akan berhenti. Untuk membuat sebuah proses berstatus yang tetap ada, kita menggunakan rekursi untuk menjaga agar proses tetap hidup dalam suatu perulangan.

1. Optimisasi Panggilan Akhir (TCO)

Jika tindakan terakhir dari suatu fungsi adalah memanggil dirinya sendiri, maka VM Erlang (BEAM) melakukan Optimisasi Panggilan Akhir. Alih-alih menambahkan frame baru ke dalam stack, ia hanya melompat kembali ke awal fungsi dengan argumen baru.

def faktorial(n, acc), do: _faktor(n-1, acc*n) # TCO
def faktorial(n), do: n * faktorial(n-1) # BUKAN TCO
logika greet()panggilan greet()TCO: Gunakan Kembali Frame Stack

2. Status yang Tetap Ada

Status dipertahankan dengan melewatkan nilai yang diperbarui sebagai argumen ke dalam panggilan rekursif. Karena TCO, argumen ini menggantikan parameter awal di dalam stack tanpa menghabiskan memori tambahan, sehingga memungkinkan perulangan berjalan tanpa batas.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>